import datetime
from django.utils import timezone
from django.test import TestCase
from .models import Question

# Create your tests here.

class QuestionMethodTests(TestCase):#继承自TestCase父类
    def test_was_published_recently_with_future_question(self):
        """
        在将来发布的问卷应该返回False
        """
        time = timezone.now() + datetime.timedelta(days=30)#计算出一个30天后的日期，这个时间，如果被检测，应该得出false的结果
        future_question = Question(pub_date=time)#创建实例，并给时间字段赋值
        self.assertIs(future_question.was_published_recently(), False)#"假如结果为False",说明程序设计健壮；"假如结果为True"，说明程序设计有bug，需要修复。assertIS就是做断言用的，会自动爆出错来。
            #据此，可以判断程序设计是否符合某一项阈值
                #而阈值的发现，还是需要人，需要人能够提前发现这些个常存在的问题
                #自动化测试，也仅仅是帮助人们输入那个超限制数字，至于超过哪个限制，这个问题要人为的发现问题才行。
                #自动测试还是有它的好处的，毕竟可做到瞬间测试很多项，具备了重复测试的可能性。有积极意义。
    def test_was_published_recently_with_old_question(self):
        """
        只要是超过1天的问卷，返回False
        """
        time = timezone.now() - datetime.timedelta(days=1, seconds=1)#计算出一个24小时之前的时间，这个时间如果被检测一下，应该得出false的结果
        old_question = Question(pub_date=time)
        self.assertIs(old_question.was_published_recently(), False)

    def test_was_published_recently_with_recent_question(self):
        """
        最近一天内的问卷，返回True
        """
        time = timezone.now() - datetime.timedelta(hours=23, minutes=59, seconds=59)#计算出一个24小时内的时间，这个时间如果被检测一下，应该得出true的结果
        recent_question = Question(pub_date=time)
        self.assertIs(recent_question.was_published_recently(), True)
    #这三个判断，覆盖了今天以前，今天以后，今天之内，所以说这是对程序作了一个全面的检测。如果程序爆出来的不是理想状态，那就要改程序。此为测试，拿这个圈去套它，套不下，就不行。








